/*
	SnowstormX.h

	Main header for externally accessing the SnowstormX engine.

	Author: Aidan Goddard 1/8/14
*/


#ifndef SNOWSTORMX_H_INCLUDED
#define SNOWSTORMX_H_INCLUDED

#include"SnowstormXExports.h"
#include<stdint.h>
#include"SnowstormXEntity.h"

enum SCREEN_TYPE {WINDOWED, FULLSCREEN, EXCLUSIVE_FULLSCREEN};

// engine parameters
struct SNOWSTORMX_PARAMS
{
	// map control
	uint32_t max_maps;		// the maximum number of maps that can be loaded

	// thread control
	uint32_t thread_usage;	// the thread usage for the engine. 0 = auto

	// window stuff
	uint32_t size_x;
	uint32_t size_y;
	bool vsync;
	SCREEN_TYPE screen_type;
	float fps_max;
	bool cursor_lock_to_window;
	bool cursor_visible;
	bool minimize_on_focus_lost;
	wchar_t *window_title;


};

// The main engine function. Returns on engine termination.
SNOWSTORMXDLL_API uint64_t EngineRun(SNOWSTORMX_PARAMS *pa, Snowstorm::Entity *main_entity, void *main_params);

#endif